/**
 * 栈接口
 * 定义栈的基本操作
 */
public interface StackInterface<T> {
    /**
     * 判断栈是否为空
     * 
     * @return 如果为空返回true，否则返回false
     */
    boolean isEmpty();

    /**
     * 判断栈是否已满（仅顺序栈有效，链栈可返回false）
     * 
     * @return 如果已满返回true，否则返回false
     */
    boolean isFull();

    /**
     * 入栈操作：将元素压入栈顶
     * 
     * @param data 要入栈的元素
     */
    void push(T data);

    /**
     * 出栈操作：移除并返回栈顶元素
     * 
     * @return 栈顶元素
     */
    T pop();

    /**
     * 查看栈顶元素：不移除仅返回
     * 
     * @return 栈顶元素
     */
    T peek();

    /**
     * 获取栈中元素个数
     * 
     * @return 元素个数
     */
    int size();

    /**
     * 清空栈中所有元素
     */
    void clear();
}

